//!
/************************************************************************************************************
 * @file RBRenderPassDepth.cpp
 ************************************************************************************************************/

/************************************************************************************************************
 * Precompiled Header
 ************************************************************************************************************/
#include "RBMainPCH.h"
 
/************************************************************************************************************
 * Includes
 ************************************************************************************************************/

#include "RBRenderPassDepth.h"

#include "RBRenderProcess/RBEffectFactory.h"

/************************************************************************************************************
 * Defines
 ************************************************************************************************************/

/************************************************************************************************************
 * Implementation
 ************************************************************************************************************/
#if 0

/************************************************************************************************************
 * Constructor
 ************************************************************************************************************/
RBRenderPassDepth::RBRenderPassDepth(const RBString& strDepthName, RBCamera* pMainCamera, uint32 uiWidth, uint32 uiHeight, 
                                     RBPixelFormat eColorFormat, RBPixelFormat eDSFormat, bool bWithNormals)
{
    m_pDepthEffect = RBEffectFactory::GetSingleton()->RetrieveEffect(strDepthName);

    Culler->SetCamera(pMainCamera);

    uint32 uiColorBufferCount = (bWithNormals) ? 2 : 1;

    SetName("DepthPass");

    // 
    RenderTargetGroup = RBRenderTargetGroup::Create(uiWidth, uiHeight, eColorFormat, eDSFormat, true, false, 0, 0, uiColorBufferCount);

}

/************************************************************************************************************
 * Destructor
 ************************************************************************************************************/
RBRenderPassDepth::~RBRenderPassDepth()
{
    RenderTargetGroup = 0;
}

/***********************************************************************************************************
 * 
 ***********************************************************************************************************/
void RBRenderPassDepth::PreProcessGeometries(const RBVisibilityComponentArray& entities, RBGeometryArray& geometries)
{
    RBRenderPass::PreProcessGeometries(entities, geometries);
    PushTechniques(geometries, m_aEffects, m_pDepthEffect);
}

/***********************************************************************************************************
 * 
 ***********************************************************************************************************/
void RBRenderPassDepth::PostProcessGeometries(const RBGeometryArray& geometries, RBVisibilityComponentArray& entities)
{
    PopTechniques(geometries, m_aEffects);
    m_aEffects.clear();
    RBRenderPass::PostProcessGeometries(geometries, entities);
}

/***********************************************************************************************************
 *
 ***********************************************************************************************************/
void RBRenderPassDepth::OnReset(bool bBeforeReset)
{
    Super::OnReset(bBeforeReset);

    if (bBeforeReset)
    {
//        RenderTargetGroup->Resize(RBRenderer::GetSingleton()->GetWidth(), RBRenderer::GetSingleton()->GetHeight());
    }
}
/************************************************************************************************************/
#endif